package com.htgd.gardenexpo.service;

import com.github.pagehelper.PageInfo;
import com.htgd.gardenexpo.dto.AreaCodeDTO;
import com.htgd.gardenexpo.dto.GeConSocialCritiqueDTO;
import com.htgd.gardenexpo.entity.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.htgd.gardenexpo.page.CritiqueQuery;
import com.htgd.gardenexpo.page.SocialContentQuery;
import com.htgd.gardenexpo.vo.GeConCritiqueVO;
import com.htgd.gardenexpo.vo.GeConSocialContentVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 社交内容 服务类
 * </p>
 *
 * @author author
 * @since 2024-10-08
 */
public interface IGeConSocialContentService extends IService<GeConSocialContent> {

    PageInfo<GeConSocialContentVO> pageList(SocialContentQuery socialContentQuery,String openId);

    /**
     * 查看详情
     * @param contentId 社交内容ID
     * @param openId 微信小程序用户唯一标识
     * @return
     */
    GeConSocialContentVO getGeConSocialContentById(String contentId,String openId);

    /**
     * 根据经纬度查询市区
     * @param lon 经度
     * @param lat 纬度
     * @return
     */
    List<GeConLonLat> selectGeConLonLat(String lon,String lat);

    /**
     * 通过第三方接口查询市区
     * @param lon 经度
     * @param lat 纬度
     * @param ip
     * @return
     */
    Map<String, Object> getAreaCode(String lon,String lat,String ip) throws Exception;

    /**
     * 点赞及取消点赞
     * @param contentId 社交内容ID
     * @param openId 微信小程序用户唯一标识
     * @return
     */
    CommonResult likes(String contentId, String openId);

    /**
     * 评论及回复
     * @param geConSocialCritique
     * @param request
     * @return
     */
    CommonResult commentReply(GeConSocialCritiqueDTO geConSocialCritique, HttpServletRequest request);

    /**
     * 查询评论列表
     * @param critiqueQuery
     * @return
     */
    PageInfo<GeConCritiqueVO> getPageCritiqueList(CritiqueQuery critiqueQuery,String openId);

    /**
     * 查询评论回复列表
     * @param critiqueQuery
     * @return
     */
    PageInfo<GeConCritiqueVO> getPageCritiqueReplyList(CritiqueQuery critiqueQuery,String openId);

    CommonResult add(GeConSocialContent geConSocialContent, String openId);
}
